﻿using AVCUMPlatform.DingTalkService.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AVCUMPlatform.DingTalkService.Interface
{
    public interface IDingPlatformApiHelper
    {
        /// <summary>
        /// 发给指定人通知信息
        /// </summary>
        /// <param name="userPhones">用户手机号（多个逗号隔开）</param>
        /// <param name="userIds">用户工号（多个逗号隔开）</param>
        /// <param name="content">内容</param>
        /// <returns></returns>
        DingTalkSendMsg DingSendPersonalRemindMsg(string userPhones,string userIds, string content);
        /// <summary>
        /// 发送待审批提醒
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="orderId">预约id</param>
        /// <param name="applicantName">eg：张三</param>
        /// <param name="flowName">eg: 重要会议预约</param>
        /// <param name="content">eg: 场地：A01，使用时间：2019-12-23日第五节</param>
        /// <param name="applyTime">2020-12-23 12:23</param>
        /// <returns></returns>
        DingTalkSendMsg DingSendAuditRemindMsg(string userid, int orderId,
            string applicantName, string flowName, string content, string applyTime);

        /// <summary>
        /// 发送批量待审批提醒
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="orderId"></param>
        /// <param name="applicantName"></param>
        /// <param name="flowName"></param>
        /// <param name="content"></param>
        /// <param name="applyTime"></param>
        /// <returns></returns>
        DingTalkSendMsg DingSendBatchAuditRemindMsg(string userid, int orderId,
            string applicantName, string flowName, string content, string applyTime);
        /// <summary>
        /// 发送审批消息
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="OrderId"></param>
        /// <param name="applicantName"></param>
        /// <param name="flowName"></param>
        /// <param name="content"></param>
        /// <param name="applyTime"></param>
        /// <param name="adjustName"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        DingTalkSendMsg DingSendAdjustAuditRemindMsg(string userid, int OrderId,
          string applicantName, string flowName, string content, string applyTime, string adjustName, int type = 1);

        /// <summary>
        /// 发送取消预约消息
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="title">eg: 自习预约/场地预约</param>
        /// <param name="time">eg: 2020年12月23日 上午十点</param>
        /// <param name="siteName">eg: 泉山17号楼 101</param>
        /// <param name="reason">eg: 与课表安排冲突</param>
        /// <param name="remark">eg: 谢谢您的理解与支持！</param>
        /// <returns></returns>
        DingTalkSendMsg DingSendCancelOrderMsg(string userid, string title,
            string time, string siteName, string reason, string remark = "谢谢您的理解与支持!");

        /// <summary>
        /// 发送取消预约消息
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="title">eg: 自习预约/场地预约</param>
        /// <param name="project"></param>
        /// <param name="time">eg: 2020年12月23日 上午十点</param>
        /// <param name="siteName">eg: 泉山17号楼 101</param>
        /// <param name="reason">eg: 与课表安排冲突</param>
        /// <param name="remark">eg: 谢谢您的理解与支持！</param>
        /// <returns></returns>
        DingTalkSendMsg DingSendCancelBatchOrderMsg(string userid, string title, string project,
            string time, string siteName, string reason, string remark = "谢谢您的理解与支持!");

        /// <summary>
        /// 发送审批状态提醒
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="flowType">场地/自习</param>
        /// <param name="site">17号楼A101</param>
        /// <param name="time">第八周 星期四 第3节</param>
        /// <param name="res">审批通过/驳回</param>
        /// <returns></returns>
        DingTalkSendMsg DingSendBookingStatusMsg(string userid, string auditorName,
            string flowType, string site, string time, string res);

        /// <summary>
        /// 发送给场地管理员
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="flowType">场地/自习</param>
        /// <param name="site">17号楼A101</param>
        /// <param name="time">第八周 星期四 第3节</param>
        /// <param name="res">审批通过/驳回</param>
        /// <returns></returns>
        DingTalkSendMsg DingSendToSiteManagerRemind(string userid, string flowType, string site, string time, string res);
        /// <summary>
        /// 发送消息提醒
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="orderId"></param>
        /// <param name="res"></param>
        /// <returns></returns>
        DingTalkSendMsg DingSendMsgRemind(string userid, int orderId, string res);

        /// <summary>
        /// 发送模板消息
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        DingTalkSendMsg SendTemplateMsg(DingTalkAsyncSend data);

        /// <summary>
        /// 发送机器人消息
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        DingTalkSendMsg SendRobotMsg(Robot data);
    }
}
